Companies are increasingly adopting multiple applications which run across multiple networks, and which may store data, including data objects, in various places across the multiple networks. With conventional systems, the multiple applications must know where relevant data is located. For example, an application typically knows if it can access relevant data locally in the system or if the application must access the data from across a network, in which case it generally knows where to find that data. Alternatively, the application could include the functionality to figure out where such data is located.
Further, some applications that require frequent access to particular data sometimes have a local copy of that data available for quick access, while the master data or the “single source of truth” for that data is located remotely, but updated periodically in some manner (generally referred to as replication). In such a case, if the application accesses the local copy of the data, it may or may not be the most recent version of that data. That is, the master data may have been changed, but the local copy of that master data may not yet be updated to reflect that change. As such, applications typically must know some lower-level information (e.g., node address) about the data they use and may also have to deal with the fact that data may or may not be completely up to date.
Not only do applications typically have to know where their relevant data is located, but applications generally need some mechanism for handling read/write access and maintaining consistency among data that has been replicated across a network.